package com.hoshiicloud.saleorder.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import java.math.BigDecimal;
import java.time.LocalDateTime;

import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

/**
 * <p>
 * 订单信息
 * </p>
 *
 * @author zhangshuhu
 * @since 2019-06-03
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@TableName("order_main")
public class OrderMain extends Model<OrderMain> {

    private static final long serialVersionUID = 1L;

    @TableField("id")
    private Long id;

    /**
     * 主订单号
     */
    @TableField("main_no")
    private String mainNo;


    /**
     * 主订单类别   1-实物订单  2-服务订单
     */
    @TableField("type")
    private Integer type;


    /**
     * 渠道  1-线上 2-线下
     */
    @TableField("channel")
    private Integer channel;


    /**
     * 1（APP_ANDROID ），2（APP_IOS），3（WEB_MOBILE），4（WEB_PC），5（SMALL_ROUTINE_ANDROID），6（SMALL_ROUTINE_IOS）
     */
    @TableField("source")
    private Integer source;


    /**
     * 结算方式  1-一次结清  2 分期付款
     */
    @TableField("settlement")
    private Integer settlement;


    /**
     * 租户ID
     */
    @TableField("company_id")
    private Long companyId;


    /**
     * 平台ID
     */
    @TableField("platform_id")
    private Long platformId;


    /**
     * 店铺ID
     */
    @TableField("store_id")
    private Long storeId;


    /**
     * 会员ID
     */
    @TableField("member_id")
    @ApiModelProperty("消费者ID ,对应plat_consumer.id")
    private Long memberId;


    /**
     * 收货人的姓名
     */
    @TableField("consignee")
    private String consignee;


    /**
     * 收货人的国家region
     */
    @TableField("country")
    private Long country;


    /**
     * 国家名称
     */
    @TableField("country_name")
    private String countryName;


    /**
     * 收货人的省份
     */
    @TableField("province")
    private Long province;


    /**
     * 省份名称
     */
    @TableField("province_name")
    private String provinceName;


    /**
     * 收货人的城市
     */
    @TableField("city")
    private Long city;


    /**
     * 城市名称
     */
    @TableField("city_name")
    private String cityName;


    /**
     * 收货人的地区
     */
    @TableField("district")
    private Long district;


    /**
     * 地区名称
     */
    @TableField("district_name")
    private String districtName;


    /**
     * 收货人的详细地址
     */
    @TableField("address")
    private String address;


    /**
     * 收货人的邮编
     */
    @TableField("zip_code")
    private String zipCode;


    /**
     * 收货人的电话
     */
    @TableField("telephone")
    private String telephone;


    /**
     * 收货人的手机
     */
    @TableField("mobile")
    private String mobile;


    /**
     * 收货人的邮箱
     */
    @TableField("email")
    private String email;


    /**
     * 收货人的最佳送货时间
     */
    @TableField("best_time")
    private String bestTime;


    /**
     * 收货人的地址的标志性建筑
     */
    @TableField("sign_building")
    private String signBuilding;


    /**
     * 订单附言，由用户提交订单前填写
     */
    @TableField("postscript")
    private String postscript;


    /**
     * 用户选择的配送方式id，取值表shipping 1, 快递， 2 配送， 3自提
     */
    @TableField("shipping_id")
    private Integer shippingId;


    /**
     * 用户选择的配送方式的名称，取值表shipping
     */
    @TableField("shipping_name")
    private String shippingName;


    /**
     * 用户选择的支付方式的id，取值表payment
     */
    @TableField("pay_id")
    private Integer payId;


    /**
     * 用户选择的支付方式的名称，取值表payment
     */
    @TableField("pay_name")
    private String payName;


    /**
     * 缺货处理方式，等待所有商品备齐后再发； 取消订单；与店主协商
     */
    @TableField("how_oos")
    private String howOos;


    /**
     * 包装名称，取值表pack
     */
    @TableField("pack_name")
    private String packName;


    /**
     * 包装id，取值取值表pack
     */
    @TableField("pack_id")
    private Integer packId;


    /**
     * 发票类型，用户页面选择
     */
    @TableField("inv_type")
    private String invType;


    /**
     * 发票抬头，用户页面填写
     */
    @TableField("inv_payee")
    private String invPayee;


    /**
     * 发票内容，用户页面选择
     */
    @TableField("inv_content")
    private String invContent;


    /**
     * 订单的来源页面
     */
    @TableField("referer")
    private String referer;


    /**
     * 发货单号，发货时填写，可在订单查询查看
     */
    @TableField("invoice_no")
    private String invoiceNo;


    /**
     * 商家给客户的留言,当该字段有值时可以在订单查询看到
     */
    @TableField("to_buyer")
    private String toBuyer;


    /**
     * 付款备注，在订单管理里编辑修改
     */
    @TableField("pay_note")
    private String payNote;


    /**
     * 商品总金额
     */
    @TableField("goods_amount")
    private BigDecimal goodsAmount;


    /**
     * 配送费用
     */
    @TableField("shipping_fee")
    private BigDecimal shippingFee;


    /**
     * 保价费用
     */
    @TableField("insure_fee")
    private BigDecimal insureFee;


    /**
     * 支付费用(,跟支付方式的配置相关，取值表payment)
     */
    @TableField("pay_fee")
    private BigDecimal payFee;


    /**
     * 包装费用，取值表取值表pack
     */
    @TableField("pack_fee")
    private BigDecimal packFee;


    /**
     * 发票税额
     */
    @TableField("tax")
    private BigDecimal tax;


    /**
     * 积分数
     */
    @TableField("points")
    private Long points;


    /**
     * 应付款金额
     */
    @TableField("order_amount")
    private BigDecimal orderAmount;


    /**
     * 订单实付金额
     */
    @TableField("amount")
    private BigDecimal amount;


    /**
     * 退款金额
     */
    @TableField("back_amount")
    private BigDecimal backAmount;


    /**
     * 优惠券金额（抵扣金额）
     */
    @TableField("benefits_amount")
    private BigDecimal benefitsAmount;


    /**
     * 余额抵扣金额
     */
    @TableField("balance_amount")
    private BigDecimal balanceAmount;


    /**
     * 金币（积分）金额
     */
    @TableField("coins_amount")
    private BigDecimal coinsAmount;


    /**
     * 是否删除 0- 未删 1-已删除
     */
    @TableField("deleted")
    private Integer deleted;


    /**
     * 付款时间
     */
    @TableField("paid_time")
    private LocalDateTime paidTime;


    /**
     * 取消时间
     */
    @TableField("cancelled_time")
    private LocalDateTime cancelledTime;


    /**
     * 交付时间
     */
    @TableField("delivery_time")
    private LocalDateTime deliveryTime;


    /**
     * 收货时间
     */
    @TableField("received_time")
    private LocalDateTime receivedTime;


    /**
     * 提交时间
     */
    @TableField("created_time")
    private LocalDateTime createdTime;


    /**
     * 制单人
     */
    @TableField("created_by")
    private String createdBy;


    /**
     * 更新时间
     */
    @TableField("updated_time")
    private LocalDateTime updatedTime;


    /**
     * 更新人
     */
    @TableField("updated_by")
    private String updatedBy;


    /**
     * 订单状态 0，未确认；1，已确认；2，已支付 3 分配中 4-已出货  5-已收货 6--售后 7-部分售后 8-已结算
     * 订单状态:
     * <p>0: 等待买家付款</p>
     * <p>1: 订单取消(超时未付款, 买家, 商家) 没有付钱订单取消</p>
     * <p>2: 等待商家发货</p>
     * <p>3: 等待买家收货</p>
     * <p>4: 备货中(自提订单使用)</p>
     * <p>5: 等待买家提货</p>
     * <p>6: 等待商家配送</p>
     * <p>7: 配送中  这里是可以退款的</p>
     * <p>8: 订单关闭   退款属于订单关闭</p>
     * <p>9: 交易成功</p>
     * <p>10: 订单归档另外加字段还是添加这个状态码</p>
     */
    @TableField("order_status")
    private Integer orderStatus;


    /**
     * 商品配送情况 0，未发货；1，已发货 2-部分发货   3，已收货；4 部分收货 5 ，备货中
     */
    @TableField("shipping_status")
    private Integer shippingStatus;


    /**
     * 支付状态 0-未支付 1-已支付 2-已退款 3-部分退款
     */
    @TableField("pay_status")
    private Integer payStatus;


    /**
     * 售后状态  0-未售后 1-已售后 2-部分售后
     */
    @TableField("service_status")
    private Integer serviceStatus;

    /**
     * 评价状态  0-未评价 1-已评价
     */
    @TableField("commented")
    private Integer commented;

    /**
     * 归档状态  0-未归档 1-已归档
     */
    @TableField("archived")
    private Integer archived;

    /**
     * 收货地址ID（关联收货地址表）
     */
    @TableField("address_id")
    private Integer addressId;

    /**
     * 店铺地址
     */
    private String store_address;

    /**
     * 收货 经度
     */
    private BigDecimal longitude;

    /**
     * 收货 维度
     */
    private BigDecimal latitude;

    /**
     * 预提时间 （消费者约定提货时间）
     */
    private LocalDateTime appointTime;

    /**
     * 骑手接单时间
     */
    private LocalDateTime horsemanSigning;

    /**
     * 骑手到店时间
     */
    private LocalDateTime horsemanArrive;

    /**
     * 骑手取货时间
     */
    private LocalDateTime horsemanDelivery;

    /**
     * 配送距离（米）
     */
    private Long deliveryDistances;

    /**
     * 骑手电话
     */
    private String horsemanTelephone;

    /**
     * 骑手姓名
     */
    private String horsemanName;

    /**
     * 进口关税额
     */
    private BigDecimal importDuties;

    /**
     * 消费税额
     */
    private BigDecimal consumptionTaxes;

    /**
     * 佣金结算状态 0-未结算 1-已结算 2-重新结算
     */
    private Integer commissionStatus;

    /**
     * 佣金结算时间
     */
    private LocalDateTime commissionTime;

    /**
     * 结算关联单号
     */
    private String commissionNo;

    /**
     * 提货单号
     */
    private String pickUpCode;

    /**
     * 联合订单号
     */
    private Long unionId;


}
